<h1>Padb: A parallel debugging tool</h1>

<h2>About</h2>
<i>Padb</i> is a <b>Job Inspection Tool</b> for examining and
debugging parallel programs, primarily it simplifies the process of
gathering stack traces on compute clusters however it also supports a wide range of other functions.
<i>Padb</i> supports a wide range of parallel environments and it's
likely it'll work out-of-the-box on your cluster.  It's an
open source, non-interactive, command line, script-able tool intended
for use by programmers and system administrators alike.

<p>
<i>Padb</i> is developed and maintained by
<a href="mailto:ashley@pittman.co.uk">Ashley Pittman</a>.

<h2>News</h2>
25-06-09 <b> A 2.5 stable release (version 2.5) is avaliable to download from the
  downloads page.</b>

<h2>Features</h2>
<ul>
<li>Stack trace generation</li>
<li>MPI Message queue display</li>
<li>Deadlock detection</li>
<li>Process interrogation</li>
<li>Signal forwarding/delivery</li>
<li>MPI collective reporting</li>
<li>Job monitoring</li>
</ul>

<h2>What padb isn't</h2>
<i>Padb</i> is a job inspection tool, it can tell you want you want
to know about your job and your MPI stack, it will not, however, tell
you about your cluster as a whole and it won't diagnose problems
with your wider environment, including you job launcher or runtime
environment.  <i>Padb</i>
does not launch or wrap your jobs for you, it is not a job harness but
rather attaches to or targets jobs which are already running.

<h2>License</h2>
<i>padb</i> is licensed under the
<a href=http://www.gnu.org/licenses/lgpl.html>LGPL</a> and as such is
open-source and free to use and modify.

<h2>History</h2>
<i>Padb</i> was originally conceived by software developers at
<a href=http://www.quadrics.com/>Quadrics</a> around 2004 to solve the
kind of problems facing them at the time.  It's been a part of the
Quadrics software stack for a number of years and has recently been
made available to a wider audience.  It has been commercially supported
for a number of years and is known to work at a scale of tens of thousands of
processes.

<h2>Parallel Environments</h2>
<i>Padb</i> works and is supported on the following parallel
environments and MPI stacks.  Not all features are available on all
runtimes.
<ul>
<li><a href=http://www.quadrics.com/>Quadrics RMS</a></li>
Runs natively on clusters running RMS.
<li><a href=https://computing.llnl.gov/linux/slurm>Slurm</a></li>
Runs natively on clusters running Slurm irrespective of the runtime used.
<li><a href=http://www.open-mpi.org/>Open MPI</a></li>
Supports orte or OpenMPI jobs run under slurm.
<li><a href=http://www.mcs.anl.gov/mpi/mpich/>MPICH2</a></li>
Supports mpd or MPICH2 jobs run under slurm.
</ul>
<p>In addition padb can be told to target individual UNIX processes.

<h2>Prerequisites</h2>
<i>Padb</i> requires very little support from the OS or parallel
environment to run, it's main use is to assist in the debugging of
parallel applications, it's assumed that you have a working MPI
stack and that "Hello world" application runs to completion without
error.<br>  A </i>Linux</i> operating system is assumed and a working
<i>gdb</i> is required for stack trace functionality.<br>
At the time of writing a shared filesystem between all nodes in the
parallel job is required if using orte (Open-MPI runtime).
